const http = require('http')

const client = require('https')

const server = http.createServer((server_req, server_res) => {
  //1：有人访问虚拟代理服务器时
  console.log(server_req.url)
  const client_options = {}
  client_options.hostname = 'appleid.apple.com.akadns.net'
  client_options.port = 443
  client_options.method = server_req.method
  client_options.path = server_req.url
  client_options.headers = server_req.headers
  client_options.headers.host = 'appleid.apple.com'
  client_options.timeout = 5000
  //2：转发Header给目标真实的服务器
  const client_req = client
    .request(client_options, client_res => {
      //3：目标服务器返回Header
      server_res.writeHead(client_res.statusCode, client_res.headers)
      client_res.on('data', d => {
        //4：收到目标服务器的数据，并转发给用户
        server_res.write(d)
      })
      client_res.on('end', d => {
        //5：目标服务器数据发完了
        server_res.end(d)
      })
    })
    .on('error', e => {
      //6：访问目标服务器时出错
      console.error(e)
    })
  server_req.on('data', data => {
    //7：收到用户发来的数据，并转发给目标服务器
    console.log(data.toString())
    client_req.write(data)
  })
  server_req.on('end', data => {
    //8：用户数据发完了。
    client_req.end(data)
  })
})

server.listen(3000, () => {
  console.log('启动成功')
})
